home *** CD-ROM | disk | FTP | other *** search
- Weitek
-
- W5086
- W5186 1MB, BitBlt, Line draw
- W5286 As W5186 + Color expansion and fills
-
- Power9000 Max 2MB. Not VGA compatible, but VGA chip can be added.
- Accelerates 8bit operations.
- Power9001 PCI version of the Power9000
- Power9100 New version with a W5286 like VGA part built in. can handle
- 8MB and accelerates 8/16/32bit operations
-
-
-
- Power9130 Video accelerator
-
-
- W5x86 series:
-
-
- 3C0h index 15h (R/W): Overscan Color High
-
- 3C4h (R/W): Sequencer Index Register
- bit 0-2 Sequencer index bits 0-2
- 3 (W5086,W5186) Enable additional registers. If set enables registers
- at 300h, 301h, 30Ah, 320h and 32Ah
- 4 Sequencer index high bit
-
- 3C4h index 5 (W): Control Register 0
- bit 2 SRS17. CRTC Display Start Address bit 16. Bits 0-15 are in 3d4h
- index 0Ch,0Dh
- 6 BO. Bit Order. If clear bit 0 is displayed first (VGA)
- 7 DVSAE. Dual Video Start Address/Offset Enable
-
- 3C4h index 6 (W): Control Register 1
- bit 3 BSE. Special Text Attributes. If set the text attributres are
- defined as follows:
- bit 0 Color 0 (Half bright in monochrome)
- 1 Underline
- 2 Reverse Video
- 3 Blinking
- 4 Bold
- 5 Struck Through
- 6 Color 1
- 7 Color 2
- 6 GHAE. Graphics Accelerator Enable. 0: Halt, 1: Enable
-
- 3C4h index 07h (R): Revision Register
- Bit 0-2 Revision Level.
- 5-7 Chip ID. 1: W5186, 2: W5286 or P9100 (0: W5086 ???)
-
- 3C4h index 10h (R): User Bits
- bit 0-3 Manufacturer information. Read from straps at power-up.
- 4-7 Always returns 9 for the W5186, 5 for the W5286 & P9100.
-
- 3C4h index 10h (W): I/O Base
- bit 0-7 Defines the upper 8 bits of the I/O base address. Default is 3 to
- map the registers at 3xxh
-
- 3C4h index 11h (R/W): Miscellaneous
- bit 5 Clear to enable extensions
- 6 Clear to enable bank addressing
- Note: to update this register, first it must be read and the value
- rewritten twice, then the changed value can be written
-
- 3C4h index 12h (R/W): Output Control
- bit 5-6 3 for 640x480, 1 for 800x600, 0 else
- 6-7 (W5286) Memory. 0: 256K, 1: 512K, 2: 1MB
- 7
-
- 3C4h index 13h (R/W): Memory Base
- bit 0-3 Base Memory address. Defines the location of the 1MB Linear Aperture
- in units of 1MB.
-
- 3CDh (R/W): Bank Register
- bit 0-3 Write Bank
- 4-7 Read bank
-
- 3CEh (R/W): Graphics Controller Index Register
- bit 0-3 Index
- 7 (R) Graphics Engine Busy if set
-
- 3CEh index 09h (R/W): GHA Queue Base Address
- bit 0-7 Base address of the Instruction Queue in units of 1KB (?). The
- Graphics engine uses a 4KByte Instruction Queue of 256 16byte
- instructions. Each instruction has this format:
- Byte Bit Description
- 00h 0-3 Plane Mask. Each bit set enables writing in the
- corresponding plane
- 4 Sync. If set the instruction is delayed until Vertical
- Retrace occurs
- 5-7 Opcode. 0: Short BitBLT, 1: Long BitBLT, 2: Short Screen
- Move, 3: Long Screen Move, 4: Steep Line Draw, Flat Line
- Draw, 6: Block Move, 7: NOP
- 01h 0-7 Start Mask. Each bit set enables writing to the
- corresponding bits in the first byte of each scanline
- 02h 0-15 (BitBLT) Horizontal Total. The width of the blit area in
- bytes (-1)
- 02h 0-15 (Linedraw) Line Decrement. The amount to subtract from
- the error term when moving parallel to the minor axis
- 04h 0-3 Source Inversion Mask. Each bit if set causes source data
- from the corresponding plane to be inverted before
- applying the operation in Byte 05h (Color Plane Logical
- Operation).
- 4-7 Destination Inversion Mask. Each bit if set causes
- destination data from the corresponding plane to be
- inverted before applying the operation in Byte 05h (Color
- Plane Logical Operation).
- 05h 0-3 Color Plane Logical Operation 0 (LOP0)
- 4-7 Color Plane Logical Operation 1 (LOP1)
- The logical operation for each plane is controlled by one
- bit from LOP0 and one from LOP1
- LOP1 LOP0 Operation
- 0 0 Store (NOP)
- 0 1 AND
- 1 0 OR
- 1 1 XOR
- 06h 0-7 End Mask. Each bit set enables writing to the
- corresponding bits in the last byte of each scanline
- 07h 0-7 Vertical Total. Height of the blit area in scanlines.
- Bits 8-9 are in Byte 0Dh bits 6-7.
- 08h 0-15 Destination Address. The offset from start of display
- memory in bytes. Bits 16-17 are in Byte 0Dh bits 1-2
- 0Ah 0-15 (BitBLT) Source Address. The offset from start of display
- memory in bytes. Bits 16-17 are in Byte 0Fh bits 1-2.
- 0Ah 0-15 (Linedraw) Line Initial Error. The Initial Error Term
- 0Ch 0-7 Destination Pitch. The number of bytes in each scanline
- at the destination. This is a 9bit two's complement value
- (Bit 8 is in Byte 0Dh bit 0). Use a negative value if DIR
- (Byte 0Fh bit 7) is set
- 0Dh 0 Destination Pitch bit 8. Bits 0-7 are in Byte 0Ch
- 1-2 Destination Address bits 16-17. Bits 0-15 are in Bytes
- 08h,09h
- 3-5 Rotate Count. Number of bits to right-shift
- 6-7 Vertical Total bits 8-9. Bits 0-7 are in Byte 07h
- 0Eh 0-7 (BitBLT) Source Pitch. The number of bytes in each
- scanline at the source. This is a 9bit two's complement
- value (Bit 8 is in Byte 0Fh bit 0). Use a negative value
- if DIR (Byte 0Fh bit 7) is set
- 0Eh 0-7 (Linedraw) Line Increment. The amount to add to the
- error term when moving parallel to the major axis
- 0Fh 0-5 (Linedraw) Line Increment bits 8-13. Bits 0-7 are in Byte
- 0Eh
- 0 (BitBLT) Source Pitch bit 8. Bits 0-7 are in Byte 0Eh
- 1-2 (BitBLT) Source Address bit 16-17. Bits 0-15 are in Byte
- 0Ah, 0Bh
- 3-4 (BitBLT) Expansion Source. Selects the plane that holds
- the source for the expansion.
- 5 (BitBLT) Expansion enable. If set color expansion is
- enabled
- 6 Interrupt Disable. If clear an interrupt is generated
- when the current instruction completes
- 7 Direction. If set the destination and source are
- processed right-to-left and bottom-to-top
-
- 3CEh index 0Ah (R/W): GHA Queue Tail Pointer
- bit 0-7 Points to the entry in the Instruction Queue where we put the next
- instruction. First write the instruction to this position, then
- increment this register
-
- 3CEh index 0Bh (R/W): GHA Queue Execution Pointer
- bit 0-7 Points to the currently (or most recently) executing instruction in
- the Instruction Queue.
-
- 3CEh index 0Ch (W): Extended Graphics
- bit 2 Set in extended 256 color modes
-
- 3CEh index 0Dh (R/W): GHA Bit Mask (5286)
- bit 0-7 Each bit enables updating the corresponding bit in each byte
-
- 3CEh index 0Eh W(R/W): BCOLOR (5286)
- bit 0-15 Background color for color expansion.
-
- 3d4h index 19h (R/W): Interlace
-
- 3d4h index 1Ah (R/W): Serial Start Address High
- bit 0-7 Bits 8-15 of the Start Address of the second frame buffer
-
- 3d4h index 1Bh (R/W): Serial Start Address Low
- bit 0-7 Bits 0-7 of the Start Address of the second frame buffer
-
- 3d4h index 1Ch (R/W): Serial Offset
- bit 0-7 CRTC Offset for the second frame buffer
-
- 3d4h index 1Dh (R/W): Total Characters Per Line
- bit 0-7 Number of character clocks displayed per line for the second frame
- buffer
-
-
- ID Weitek VGA:
-
- old:=rdinx(SEQ,$11);
- outp(SEQ+1,old);
- outp(SEQ+1,old);
- outp(SEQ+1,inp(SEQ+1) or $20);
- if not testinx(SEQ,$12) then
- begin
- x:=rdinx(SEQ,$11);
- outp(SEQ+1,old);
- outp(SEQ+1,old);
- outp(SEQ+1,inp(SEQ+1) and $DF);
- if testinx(SEQ,$12) and tstrg($3CD,$FF) then
- begin
- _Weitek chip_
- end;
- end;
- wrinx(SEQ,$11,old);
-
-
- Video Modes:
-
- 0054h T 132 43
- 0055h T 132 25
- 0056h T 132 43 4color
- 0057h T 132 25 4color
- 0058h G 800 600 16c PL4
- 0059h G 800 600 16c PL4
- 005Ah G 1280 1024 16c PL4
- 005Ch G 800 600 256c P8
- 005Dh G 1024 768 16c PL4
- 005Eh G 1024 768 256c P8
- 005Fh G 640 480 256c P8
- 0064h T 132 60
- 0065h T 132 50
- 0066h T 132 60 4c
- 0067h T 132 50 4c
- 0068h T 80 60
- 0069h G 640 480 16m P24
- 006Ah G 800 600 16c PL4
- 006Ch G 640 480 32Kc P15
- 006Dh G 800 600 32Kc P15
- 006Eh G 640 480 64Kc P16
- 006Fh G 800 600 64Kc P16
-
-
-
- Power 9000/9100:
- The Power 9000 and 9100 have different memory and register layouts.
- Also the different brands of Power9000/9100 boards all have different
- Linear Aperture addresses, DAC access and special registers
-
- The registers and video memory of the Power 9000 are mapped in a 4MB linear
- memory block staring at M (typically 20000000h, 80000000h or A0000000h):
-
- M+000000h - M+0FFFFFh (1MB) Non-Power 9000 use
- M+100000h - M+1FFFFFh (1MB) Registers. The registers are 32bit and internally
- stored in Big Endian format. Bits 16-18 of the
- address are used to access the register with
- different combinations of bit, byte and halfword
- (16bit) swaps:
- +00000h
- +10000h Swap bits
- +20000h Swap bytes
- +30000h Swap bytes and bits
- +40000h Swap Halfwords
- +50000h Swap Halfwords and bits
- +60000h Swap Halfwords and bytes
- +70000h Swap Halfwords, bytes and bits
- Bits 13-15 of the address appears to be ignored.
- M+200000h - M+3FFFFFh (2MB) Video memory
-
- The Power9100 has a more compact register layout where the registers are in
- one 32Kbyte block, accessible either at A000h or in the Linear Aperture.
- Swapping of bits/bytes/halfword are controlled from a register.
-
- The registers below are shown as M+xxxh, where M+xxxh is the Power9100 address
- (even if the register does not exist for the Power9100). The corresponding
- Power9000 address can be found as:
- Power9100 Power9000
- 0000h - 1FFFh 100000h - 101FFFh
- 2000h - 3FFFh 180000h - 181FFFh
- 4000h - 7FFFh No match
- The swap flags are added to the Power9000 address in bits 16-18 (see above).
-
-
-
- 3C4h index 12h (R/W):
- bit 0-1 Base Address. 0: None, 1: A0000000h, 2: 20000000h, 3: 80000000h
- 2 Should be 0
- 3 Should be 1
- 4 P9000 Enabled if set, disable if clear
- 5 HSync polarity. Positive if clear, negative if set
- 6 VSync polarity. Positive if clear, negative if set
- 7 W5186 (or other VGA) Enabled if set, disabled if clear
-
- 3CDh (R/W): Bank Register: (Viper)
- bit 0-5 Bank number. Maps a 64K block of the 4MB linear block at A000h, thus:
- 00h - 0Fh Maps 64K of the non-Power 9000 block
- 10h - 1Fh Maps a 64K Register block
- 20h - 3Fh Maps 64K of the Video memory
- Note: This register only exists in the Viper (non-PCI versions) and is
- implemented by external logic.
-
- XXXXh (R/W): PCI Bank Register (Viper PCI)
- bit 1-6 Bank number. Maps a 64K block of the 4MB linear block at A000h, thus:
- 00h - 0Fh Maps 64K of the non-Power 9000 block
- 10h - 1Fh Maps a 64K Register block
- 20h - 3Fh Maps 64K of the Video memory
- Note: This register only exists in the Viper PCI systems and is (probably?)
- implemented by external logic.
- The Base address for this register is found from Offset 14h in the PCI
- configuration space.
-
- 9100h (R/W): "PCI index register" (9100)
- bit 0-7 Selects the offset into the 256byte PCI configuration space accessed
- at 9104h. This allows access to the PCI configuration space even in
- non-PCI systems.
-
- 9104h (R/W): "PCI data register" (9100)
- bit 0-7 Each access to this register reads or writes the byte from the PCI
- configuration space selected by 9100h. This allows access to the PCI
- configuration space even in non-PCI systems.
-
- M+0004h D(R/W): System Configuration Register
- bit 0-2 Power 9000 version number. Always 0 on the 9100
- 9 Pixel writes go to buffer 1 if set, buffer 0 if clear
- 10 Pixel reads go to buffer 1 if set, buffer 0 if clear
- 11 If set swaps bits within each 32 bit DWORD when accessing display
- memory (similar to the bit swap for register accesses)
- 12 If set swaps bytes within each 32 bit DWORD when accessing display
- memory (similar to the byte swap for register accesses)
- 13 If set swaps halfwords within each 32 bit DWORD when accessing
- display memory (similar to the halfword swap for register accesses)
- 14-22 The width of a scanline in pixels is determined by adding the
- result of the three 3bit fields (Bits 14-16, 17-19 and 20-22).
- Each field selects: 0: 0, 1: 32, 2: 64, 3: 128, 4: 256, 5: 512,
- 6: 1024, 7: 2048. Thus a width of 1280 is achieved by having
- one field with 0, one with 4 and one with 6 (0+256+1024 = 1280).
- 23 Must be 0
- 24 If set the Frame Buffer Controller has double load, normal if clear
- 25 Must be 0
- 26-28 (9100) Pixel Size. 0: 8bpp, 1: 16bpp, 2: 24bpp
- 29-20 (9100) Shift3. Fourth subfield for the scanline width in bits 14-22
-
- M+0008h D(R/W): Interrupt Register
- bit 0 The drawing engine is idle if set, busy if clear
- 1 Must be set on writes for bit 0 to be updated. Reads as 1
- 2 If set a pick is done
- 3 Must be set on writes for bit 2 to be updated. Reads as 1
- 4 If set a vertical blanking has occured
- 5 Must be set on writes for bit 4 to be updated. Reads as 1
- Note: The interrupt status bits (Bits 0,2,4) are sticky, once the condition
- has occured they remain set until cleared by a write. If an interrupt
- status bit (Bits 0,2,4) is set an interrupt will be generated if allowed
- by the Interrupt Enable register (M+0000Ch).
-
- M+000Ch D(R/W): Interrupt Enable
- bit 0 If set allows interrupt when the drawing engine goes idle
- 1 Must be set on writes for bit 0 to be updated. Reads as 1
- 2 If set allows interrupt when a pick occurs
- 3 Must be set on writes for bit 2 to be updated. Reads as 1
- 4 If set allows interrupt when vertical blanking occurs
- 5 Must be set on writes for bit 4 to be updated. Reads as 1
- 6 If set allows interrupts as specified by bits 0,2 and 4, if clear
- all interrupts are disabled
- 7 Must be set on writes for bit 6 to be updated. Reads as 1
-
- M+0010h D(R/W): Alternate Read Bank (9100)
- bit 16-22 Read bank. Selects the 64K block accessed by reading at Axxxxh
-
- M+0014h D(R/W): Alternate Write Bank (9100)
- bit 16-22 Write bank. Selects the 64K block accessed by writing to Axxxxh
-
-
- M+0104h D(R): Horizontal Counter (hrzc)
- bit 0-11 The currently displayed pixel in DDOTCLK clocks from the start of
- Horizontal Retrace (Falling edge of HSYNC-).
-
- M+0108h D(R/W): Horizontal Length (hrzt)
- bit 0-11 The total number of DDOTCLK clocks in a scanline including blanking
- . and retrace
-
- M+010Ch D(R/W): Horizontal Sync Rising Edge (hrzsr)
- bit 0-11 The HSYNC- pulse width in number of DDOTCLK clocks.
-
- M+0110h D(R/W): Horizontal Blank Rising Edge (hrzbr)
- bit 0-11 The number of DDOTCLK clocks from the start of horizontal retrace
- (Falling edge of HSYNC-) to the end of blanking (Rising edge of
- HBLNK-)
-
- M+0114h D(R/W): Horizontal Blank Falling Edge (hrzbf)
- bit 0-11 The number of DDOTCLK clocks from the start of the horizontal
- retrace (Falling edge of HSYNC-) to the start of blanking (Falling
- edge of HBLNK-)
-
- M+0118h D(R/W): Horizontal Counter Preload Value (prehrzc)
- bit 0-11 The value to load into the Horizontal Counter (M+100104h) when an
- internal or external HSYNC- is received to allow synchronisation
- with an external source. Should be set to 0 if external sync is not
- used.
-
- M+011Ch D(R): Vertical Counter (vrtc)
- bit 0-11 The currently displayed line number
-
- M+0120h D(R/W): Vertical Length (vrtt)
- bit 0-11 The total number of lines in a frame including blanking and retrace
-
- M+0124h D(R/W): Vertical Sync Rising Edge (vrtsr)
- bit 0-11 The width of the Vertical Sync (VSYMC-) pulse in scanlines
-
- M+0128h D(R/W): Vertical Blank Rising Edge (vrtbr)
- bit 0-11 The number of scanlines from the start of Vertical Retrace (Falling
- edge of VSYNC-) to the end of Vertical Blanking (Rising edge of
- VBLNK-)
-
- M+012Ch D(R/W): Vertical Blank Falling Edge (vrtbf)
- bit 0-11 The number of scanlines from the start of Vertical Retrace (Falling
- edge of VSYNC-) to the start of Vertical Blanking (Falling edge of
- VBLNK-)
-
- M+0130h D(R/W): Vertical Counter Preload Value (prevrtc)
- bit 0-11 The value to load into the Vertical Counter (M+18011Ch) when an
- internal or external VSYNC- is received to allow synchronization
- with external video sources. Should be set to 0 if external sync is
- not used.
-
- M+0134h D(R): Screen Repaint Address (sraddr)
- bit 0-11 The next VRAM row address to load into the VRAM. This is bits 10-21
- of the linear memory address. When Vertical Blanking starts this
- register is set to 0 (or the start address of the second buffer).
-
- M+0138h D(R/W): Screen Repaint Timing Control (srtctl)
- bit 0-2 QSF counter position. Selects which bit in the QSF counter register
- (M+013Ch) causes the next row address transfer.
- Typical values:
- Memory 1 DDOTCLK 1 DDOTCLK
- Config: = 4 dots = 8 dots
- 1 4 3
- 2 4 3
- 3 5 4
- 4 5 4
- 5 6 5
- 3 Set to select buffer 1 for display, clear to select buffer 0
- 4 Set to select Restricted (HBLNK- reload) mode, clear to select
- normal (split shift) mode.
- 5 Set for normal operation, clear for Blanks asserted
- 6 Set to select Composite synchronization, clear to select separate
- synchronization
- 7 Set to select internal HSYNC-, clear to select external HSYNC-
- 8 Set to select internal VSYNC-, clear to select external VSYNC-
-
- M+013Ch D(R): QSF Counter (qsfcounter or sraddr_inc?)
- bit 0-11 Counts DDOTCLK pulses within the current VRAM page, Ie. which bits
- are shifted out of the VRAMs
- Note: The sraddr_inc and qsfcounter register appears to be the same, but the
- documentation leaves some doubt
-
- M+0184h D(R/W): Memory Configuration (mem_config)
- bit 0-2 Frame buffer VRAM configuration:
- 0: Memory Config 1. 8 256Kx4 VRAMs in 1 bank and 1 1Mpixel
- buffer
- 1: Memory Config 2. 8 128Kx8 VRAMs in 2 interleaved banks and
- 1 1Mpixel buffer
- 2: Memory Config 3. 16 256Kx4 VRAMs in 2 interleaved banks and
- 1 2Mpixel buffer
- 3: Memory Config 4. 16 256Kx4 VRAMs in 2 interleaved banks and
- 2 1Mpixel buffers
- 4: Memory Config 5. 32 256Kx4 VRAMs in 4 interleaved banks and
- 2 2Mpixel buffers
-
- M+0188h D(R/W): Refresh Period (rfperiod)
- bit 0-9 The max time between memory refreshes in SYSCLK periods
-
- M+018Ch D(R): Refresh Counter (rfcount)
- bit 0-9 This register is decremented on each SYSCLK until it reaches 0,
- when a refresh request is made and the register is reloaded from
- the Refresh Period Register (M+0188h).
-
- M+0190h D(R/W): RAS Low Maximum (rlmax)
- bit 0-9 The maximum time the RAS- signal can be asserted in SYSCLK periods
-
- M+0194h D(R): RAS low count (rlcur)
- bit 0-9 When RAS- is asserted this register is loaded with the value in the
- RAS Low Maximum register (M+0190h) and then decremented on each
- SYSCLK until either RAS- is deasserted, or it reaches 0 in which
- case a refresh sequence is started.
-
- M+198h W(?): (9100)
- bit 12-15 Number of FIFo slots free ??
- Note: Apparently the IBM RGB525 DAC requires a read or write of this register
- for the last write to a DAC register at 200h-23Ch takes effect ?
-
- M+200h - M+23Ch D(R/W): DAC regs 0-15 (9100)
- bit 0-7 Each access to one of these registers causes a read or write of
- the corresponding DAC register (200h is REG00, 210h is REG04...)
- The IBM RGB525 DAC apparently requires a read or write of M+198h
- after a write to a DAC register ? Usually the same value is
- repeated in all four bytes (bits 0-7, 8-15, 16-23 and 24-31) ?
-
- M+2000h D(R): Status Register
- bit 0 If set the source coordinates for a quad draw straddle the clipping
- window
- 1 If set the source coordinates for a quad draw are entirely inside
- the clipping window
- 2 If set the source coordinates for a quad draw are entirely outside
- the clipping window
- 3 If set the requested quad is concave
- 4 If set an exception was encountered for a quad command, the
- operation cannot be performed and must be done in software
- 5 If set an exception was encountered for a blit command, the
- operation cannot be performed and must be done in software
- 6 If set an exception was encountered for a pixel command, the
- operation cannot be performed and must be done in software
- 7 If set a pick was detected. (This is a copy of the pick bit in the
- interrupt register (M+0008h bit 2)).
- 30 If set the drawing engine is busy
- 31 If set a Quad or Blit operation can not be started
-
- M+2004h D(R): Blit command
- Note: Reading this register issues a Blit command using X[0]/Y[0] as the upper
- left corner of the source, X[1]/Y[1] as the lower right corner of the
- source, X[2]/Y[2] as the upper left corner of the destination and
- X[3]/Y[3] as the lower right corner of the destination. The source and
- destination areas must be the same size. If the destination is out of
- range bit 5 of the Status Register (M+2000h) is set and the operation
- must be done in software.
- Bit 31 of the Status Register (M+2000h) should be tested before a Quad
- operation is issued.
-
- M+2008h D(R): Quad command
- Note: Reading this register issues a Quad command using X[0-3],Y[0-3] as
- coordinates. If the Quad defined by the coordinates id concave or one
- (or more) of the coordinates is out of range bit 4 of the Status
- Register (M+2000h) is set and the operation must be done in software.
- Bit 31 of the Status Register (M+2000h) should be tested before a Quad
- operation is issued.
-
- M+200Ch D(W): Pixel8 command
-
- M+2014h D(W): Next_pixels command
-
- M+2080h - M+20FCh D(W): Pixel1
- Note: Writing to this register starts a Pixel1 command of (n+1) pixels,
- where n is bits 2-6 of the address written to.
-
- M+2184h D(R): Out of range (OOR) Register
- bit 0 Set if y[0] is out of range
- 1 Set if y[1] is out of range
- 2 Set if y[2] is out of range
- 3 Set if y[3] is out of range
- 4 Set if x[0] is out of range
- 5 Set if x[1] is out of range
- 6 Set if x[2] is out of range
- 7 Set if x[3] is out of range
-
- M+218Ch D(R/W): Cindex
- bit 0-1 Selects one of the 4 X/Y coordinate register sets.
-
- M+2190h D(R/W): Window Offset Register
- bit 0-15 Y-offset of current window
- 16-31 X-offset of current window
-
- M+2194h D(R): Parameter Engine Window Minimum Register
- bit 0-12 Minimum Y value (top line). Pixels above this line are not drawn
- 16-28 Minimum X value (left edge). Pixels left of this are not drawn
- Note: This register can be read and written at M+2220h
-
- M+2198h D(R): Parameter Engine Window Maximum Register
- bit 0-12 Minimum Y value (bottom line). Pixels below this line are not drawn
- 16-28 Minimum X value (right edge). Pixels right of this are not drawn
- Note: This register can be read and written at M+2224h
-
- M+21A0h D(R): Yclip
- bit 0 Set if Y[0] > the window maximum (M+2224h)
- 1 Set if Y[1] > the window maximum (M+2224h)
- 2 Set if Y[2] > the window maximum (M+2224h)
- 3 Set if Y[3] > the window maximum (M+2224h)
- 4 Set if Y[0] < the window minimum (M+2220h)
- 5 Set if Y[1] < the window minimum (M+2220h)
- 6 Set if Y[2] < the window minimum (M+2220h)
- 7 Set if Y[3] < the window minimum (M+2220h)
-
- M+21A4h D(R): Xclip
- bit 0 Set if X[0] > the window maximum (M+2224h)
- 1 Set if X[1] > the window maximum (M+2224h)
- 2 Set if X[2] > the window maximum (M+2224h)
- 3 Set if X[3] > the window maximum (M+2224h)
- 4 Set if X[0] < the window minimum (M+2220h)
- 5 Set if X[1] < the window minimum (M+2220h)
- 6 Set if X[2] < the window minimum (M+2220h)
- 7 Set if X[3] < the window minimum (M+2220h)
-
- M+21A8h D(R): Xedge_lt
- bit 0 Set if X[0] > X[2]
- 1 Set if X[1] > X[3]
- 2 Set if X[3] > X[0]
- 3 Set if X[2] > X[3]
- 4 Set if X[1] > X[2]
- 5 Set if X[0] > X[1]
-
- M+21ACh D(R): Xedge_gt
- bit 0 Set if X[0] < X[2]
- 1 Set if X[1] < X[3]
- 2 Set if X[3] < X[0]
- 3 Set if X[2] < X[3]
- 4 Set if X[1] < X[2]
- 5 Set if X[0] < X[1]
-
- M+21B0h D(R): Yedge_lt
- bit 0 Set if Y[0] > Y[2]
- 1 Set if Y[1] > Y[3]
- 2 Set if Y[3] > Y[0]
- 3 Set if Y[2] > Y[3]
- 4 Set if Y[1] > Y[2]
- 5 Set if Y[0] > Y[1]
-
- M+21B4h D(R): Yedge_gt
- bit 0 Set if Y[0] < Y[2]
- 1 Set if Y[1] < Y[3]
- 2 Set if Y[3] < Y[0]
- 3 Set if Y[2] < Y[3]
- 4 Set if Y[1] < Y[2]
- 5 Set if Y[0] < Y[1]
-
- M+2200h D(R/W): Foreground Color (fground) (9000)
- bit 0-7 The foreground color used in drawing
-
- M+2200h D(R/W): Color 0 (9100)
- bit 0-31 Color0. For 8bpp modes repeat bits 0-7 in bits 8-15, 16-23 and
- 24-31, for 15/16bpp modes repeat bits 0-15 in bits 16-31.
-
- M+2204h D(R/W): Background Color (bground)
- bit 0-7 The background color used in drawing
-
- M+2204 D(R/W): Color 1 (9100)
- bit 0-31 Color1. For 8bpp modes repeat bits 0-7 in bits 8-15, 16-23 and
- 24-31, for 15/16bpp modes repeat bits 0-15 in bits 16-31.
-
- M+2208h D(R/W): Plane Mask (pmask)
- bit 0-7 Each bit enables the corresponding plane in the frame buffer if set
-
- M+220Ch D(R/W): Draw mode (draw_mode)
- bit 0 If set selects buffer 1 for all drawing operations, if clear
- selects buffer 0
- 1 Must be set on writes for bit 0 to be updated. Reads as 1
- 2 If set suppresses all writes and sets the picked bit in the
- Interrupt Register (M+0008h bit 2)
- 3 Must be set on writes for bit 2 to be updated. Reads as 1
-
- M+2210h D(R/W): Pattern Origin X (Pat_originx)
- bit 0-3 X origin of the pattern
-
- M+2214h D(R/W): Pattern Origin Y (Pat_originy)
- bit 0-3 Y origin of the pattern
-
- M+2218h D(R/W): Raster Register (raster)
- bit 0-7 (9100) The minterm to use for raster operations.
- 0-15 (9000) The minterm to use for raster operations.
- 13 (9100) Solid Color Disable. If set Solid Color is disabled and
- Patterns enabled, if clear Solid Color is disabled and Patterns
- are disabled.
- 14 (9100) Pattern Depth. 0: 2color, 1: 4color
- 15 (9100) Pixel1 Transparent. Enable Pixel1 transparent mode if set
- 16 If set Quad draw mode is Oversize mode, if clear X11 mode
- 17 If set enables the pattern (M+2280h - M+229Ch) for Quad draw
- operations, if clear disables the pattern by forcing it to all 1's
-
- M+221Ch D(R/W): Pixel8 Register (pixel8_reg)
- bit 0-7? Excess data from the last pixel8 operation.
-
- M+2220h D(R/W): Window Minimum Register (w_min)
- bit 0-12 Minimum Y value (top line). Pixels above this line are not drawn
- 16-28 Minimum X value (left edge). Pixels left of this are not drawn
-
- M+2224h D(R/W): Window Maximum Register (w_max)
- bit 0-12 Minimum Y value (bottom line). Pixels below this line are not drawn
- 16-28 Minimum X value (right edge). Pixels right of this are not drawn
-
- M+2238h D(R/W): Color2 (9100)
- bit 0-31 Color2. For 8bpp modes repeat bits 0-7 in bits 8-15, 16-23 and
- 24-31, for 15/16bpp modes repeat bits 0-15 in bits 16-31.
-
- M+223Ch D(R/W): Color 3 (9100)
- bit 0-31 Color3. For 8bpp modes repeat bits 0-7 in bits 8-15, 16-23 and
- 24-31, for 15/16bpp modes repeat bits 0-15 in bits 16-31.
-
- M+2280h D(R/W): Pattern 0/1 Register (9000)
-
- M+2280h D(R/W): Pattern 0 (9100)
-
- M+2284h D(R/W): Pattern 2/3 Register (9000)
-
- M+2284h D(R/W): Pattern 1 (9100)
-
- M+2288h D(R/W): Pattern 4/5 Register (9000)
-
- M+2288h D(R/W): Pattern 2 (9100)
-
- M+228Ch D(R/W): Pattern 6/7 Register (9000)
-
- M+228Ch D(R/W): Pattern 3 (9100)
-
- M+2290h D(R/W): Pattern 8/9 Register (9000)
-
- M+2290h D(R/W): Software 0 (9100)
-
- M+2294h D(R/W): Pattern 10/11 Register (9000)
-
- M+2294h D(R/W): Software 1 (9100)
-
- M+2298h D(R/W): Pattern 12/13 Register (9000)
-
- M+2298h D(R/W): Software 2 (9100)
-
- M+229Ch D(R/W): Pattern 14/15 Register (9000)
-
- M+229Ch D(R/W): Software 3 (9100)
-
- M+22A0h D(R/W): Byte Window Min (9100)
-
- M+22A4h D(R/W): Byte Window Max (9100)
-
- M+3000h - M+31FFh D(R/W): Device Coordinate Registers
- bit 0-31 (Adr bit 3-4 = 1) 32bit X coordinate
- 0-31 (Adr bit 3-4 = 2) 32bit Y coordinate
- 0-15 (Adr bit 3-4 = 3) 16bit Y coordinate
- 16-31 (Adr bit 3-4 = 3) 16bit X coordinate
- Note: When these registers are accessed the lower bits of address selects the
- X/Y register and the form used as follows:
- Address bits:
- 0-2 Should be 0
- 3-4 Selects the data: 1: 32bit X value, 2: 32bit Y value,
- 3: Y in lower 16 bits and X in upper 16 bits
- 5 If set the data (X/Y) is window relative (only valid for writes),
- if clear the data is absolute
- 6-7 Selects the X/Y coordinate register:
- 0: X[0]/Y[0], 1: X[1]/Y[1], 2: X[2]/Y[2], 3: X[3]/Y[3]
- Note: On the Power9000 these registers can probably also be accessed at
- address: M+3400h - M+35FFh (M+181400h - M+1815FFh in Power9000 terms)
- as bit 10 of the address is not decoded
-
- M+3200h - M+33FFh D(W): Meta-Coordinate Pseudo regs
- bit 0-31 (Adr bit 3-4 = 1) 32bit X coordinate
- 0-31 (Adr bit 3-4 = 2) 32bit Y coordinate
- 0-15 (Adr bit 3-4 = 3) 16bit Y coordinate
- 16-31 (Adr bit 3-4 = 3) 16bit X coordinate
- Note: For these registers the data written is the coordinate(s) and the lower
- bits of the address specify the drawing operation:
- Address bits:
- 0-2 Should be 0
- 3-4 Selects the interpretation of the data written to the register.
- 1: 32bit X value, 2: 32bit Y value, 3: Y in lower 16 bits and
- X in upper 16 bits
- 5 If set the coordinate is relative to the previous one, if clear
- it is relative to the window offset
- 6-8 Type of operation. 0: Point, 1: Line, 2: Triangle,
- 3: Quadrilateral, 4: rectangle
- Note: On the Power9000 these registers can probably also be accessed at
- address: M+3600h - M+37FFh (M+181600h - M+1817FFh in Power9000 terms)
- as bit 10 of the address is not decoded
-
- 4386-9h DAC
- 8386-9h DAC
- C386-9h DAC
-
-
- PCI Configuration space:
- Byte 41h Bit 2 Set to access the DAC registers at A000h
- Bit 3 Set to access the graphics engine registers at A000h
-
-
-
-
- Memory Locations:
- 0:0487h (9100) Bit 4. Set for IBM RGB525 DAC, clear for Bt485 DAC
- 0:0489h (9100) Bit 5. Set for 4MB video memory, clear for 2MB
-
- ----------1DAA-------------------------------
- INT 10 - VIDEO - Diamond Get System Info (Viper Pro)
- AX = 1DAAh
- BX = FDECh
- Return: BX = CEDFh if Viper Pro (Weitek P9100)
- AL = Memory Type:
- 01h: 1MB 8 128Kx8
- 02h: 2MB 8 256Kx8 or 16 256Kx4
- 04h: 4MB
- 10h: 1MB 8 256Kx4
- AH = Bits 0-3 = DAC type:
- 0: Normal 8bit DAC
- 1: Sierra 15/16bit DAC
- 2: MUSIC MU9c1880/Diamond SS24
- 3: Brooktree Bt485
- 7: IBM RGB525
- 4 = VGA chip. 0: Weitek 5x86, 1: Oak OTI-087
- 5 = Bus type: 0: VLB bus, 1: PCI bus.
- SI:DI -> Viper BIOS string
-